<?php

/** 
 * @author felipe
 * 
 * 
 */
class App_Model_Db_Unidade extends Voitech_Db{

    protected $_name = 'unidade';
	protected $_primary = 'co_unidade';
	
	static private $instancia;

	/**
	 * @return App_Model_Db_Unidade
	 */
	static public function build() {
		if( !isset( self::$instancia ) ) {
			$classe = __CLASS__;
			self::$instancia = new $classe();
		}
		return self::$instancia;
	}

        public function buscar($co_unidade){
            $obSelect = $this->getAdapter()->select()
                                           ->from('unidade')
                                           ->joinInner('pessoa','unidade.co_responsavel = pessoa.co_pessoa'
                                                      ,array('no_responsavel'=>'pessoa.no_pessoa'))
                                           ->where('unidade.co_unidade = ?',$co_unidade);
            return $this->getAdapter()->fetchRow($obSelect);
        }
        
        public function listarTodos(Voitech_TO $obTO){
            $obSelect = $this->getAdapter()->select()
				            				 ->from(array('unidade'=>'unidade'),
				            				 		array('*',
				                          				  'excluir' => '(CASE 
																		    WHEN (SELECT count(*) FROM distribuicao WHERE unidade.co_unidade = distribuicao.co_unidade)> 0 THEN
																		    	\'N\'
																		    ELSE
																		    	\'S\'
																		  END)'))
                                           ->joinInner('pessoa','unidade.co_responsavel = pessoa.co_pessoa'
                                                      ,array('co_responsavel'=>'pessoa.co_pessoa'
                                                            ,'no_responsavel'=>'pessoa.no_pessoa'));
             if( !empty( $obTO->co_unidade ) ) {
                    $obSelect->where('unidade.co_unidade =?', $obTO->co_unidade);
            }
            if( !empty( $obTO->no_unidade ) ) {
                    $obSelect->where('unidade.no_unidade like ?', "%".$obTO->no_unidade."%");
            }
            if( !empty( $obTO->st_ativo ) ) {
                    $obSelect->where('unidade.st_ativo =?', $obTO->st_ativo);
            }
            $obSelect->order('unidade.no_unidade');
            return $this->getAdapter()->fetchAll($obSelect);
        }
}